Signal strength representation and automatic connection and control upon a self-propelled device

ABSTRACT

Systems and methods for facilitating automatic connection between a mobile computing device and a self-propelled device are provided. The self-propelled device can transmit a radio signal in a sleep mode. The mobile computing device may detect the radio signal and generate a visual representation of the signal strength to facilitate in establishing an automatic connection. Once the signal strength crosses a predetermined threshold, a connection and control sequence may be initiated automatically in which a control mode may be initiated on the mobile computing device to enable user control of the self-propelled device.

BACKGROUND

Remote controlled devices have previously been operated usingspecialized remote controllers specific to a particular device. With theonset of network technology and mobile application development,multi-functional mobile devices may be configured to operate and controlsuch remote controlled devices based on a variety of wirelessconnections.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure herein is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements, and in which:

FIG. 1 is a block diagram illustrating an example mobile computingsystem performing a connection and control operation with aself-propelled device;

FIG. 2A is a flow chart describing an example high level method ofgenerating a visual representation of the signal strength of a detectedradio signal;

FIG. 2B is a flow chart describing an example low level method offacilitating automatic control connection with a self-propelled device;

FIG. 3 illustrates schematic diagram of an example self-propelled deviceupon which examples described herein may be implemented;

FIG. 4A is a flow chart describing an example process for operating aself-propelled device in a sleep mode;

FIG. 4B is a flow chart describing an example process for operating aself-propelled device in a control mode; and

FIG. 5 is a block diagram illustrating a computer system upon whichexamples described may be implemented.

DETAILED DESCRIPTION

Systems and methods are provided for facilitating automatic connectionbetween a mobile computing device and a self-propelled device to enablecontrol over the self-propelled device. In a sleep mode, theself-propelled device can emit a radio signal. Within a proximity to theself-propelled device, the mobile computing device may detect theemitted signal and generate a dynamic representation of the signalstrength of the radio signal for display. If the signal strength crossesa predetermined threshold, a connection may be initiated to establish aconnection with the self-propelled device. When the connection isestablished, an automatic function may be performed by theself-propelled device, such as a visual and/or audible greetingfunction. Further implementations can include a automatic connect andcontrol sequence, which may be initiated upon the signal strengthcrossing the predetermined threshold to automatically launch a controlapplication on the mobile computing device to enable a user to remotelyoperate the self-propelled device.

According to examples, the emitted radio signal from the self-propelleddevice can comprise a BLUETOOTH low energy beacon. The mobile computingdevice can perform a linear regression technique to stabilize a receivedsignal strength indicator (RSSI) corresponding to the BLUETOOTH lowenergy beacon. Stabilizing the RSSI can comprise dynamically inputtingindividually received RSSI values into the linear regression model tooutput the stabilized RSSI, which may then be utilized to generate thedynamic representation of the signal strength.

Further implementations include a self-propelled device operable in asleep mode and a control mode. In the sleep mode, the self-propelleddevice can utilize an internal radio processor to (i) emit a radiosignal, (ii) establish a connection with a mobile computing device basedon a proximity of the mobile computing device to the self-propelleddevice, and (iii) in response to establishing the connection, awaken aninternal main processor and initiate the control mode on theself-propelled device. In the control mode, the self-propelled devicecan utilize the main processor to (i) perform an automated functionbased on received data, (ii) receive control commands from the mobilecomputing device to maneuver the self-propelled device, and/or (iii)implement the control commands on the internal drive system to maneuverthe self-propelled device.

One or more examples described herein provide that methods, techniques,and actions performed by a computing device are performedprogrammatically, or as a computer-implemented method. Programmatically,as used herein, means through the use of code or computer-executableinstructions. These instructions can be stored in one or more memoryresources of the computing device. A programmatically performed step mayor may not be automatic.

One or more examples described herein can be implemented usingprogrammatic modules or components of a system. A programmatic module orcomponent can include a program, a sub-routine, a portion of a program,or a software component or a hardware component capable of performingone or more stated tasks or functions. As used herein, a module orcomponent can exist on a hardware component independently of othermodules or components. Alternatively, a module or component can be ashared element or process of other modules, programs or machines.

Some examples described herein can generally require the use ofcomputing devices, including processing and memory resources. Forexample, one or more examples described herein can be implemented, inwhole or in part, on computing devices such as digital cameras, digitalcamcorders, desktop computers, cellular or smart phones, personaldigital assistants (PDAs), laptop computers, printers, digital pictureframes, and tablet devices. Memory, processing, and network resourcesmay all be used in connection with the establishment, use, orperformance of any example described herein (including with theperformance of any method or with the implementation of any system).

Furthermore, one or more examples described herein may be implementedthrough the use of instructions that are executable by one or moreprocessors. These instructions may be carried on a computer-readablemedium. Machines shown or described with figures below provide examplesof processing resources and computer-readable mediums on whichinstructions for implementing examples can be carried and/or executed.In particular, the numerous machines shown with examples includeprocessor(s) and various forms of memory for holding data andinstructions. Examples of computer-readable mediums include permanentmemory storage devices, such as hard drives on personal computers orservers. Other examples of computer storage mediums include portablestorage units, such as CD or DVD units, flash memory (such as carried onsmart phones, multifunctional devices or tablets), and magnetic memory.Computers, terminals, network enabled devices (e.g., mobile devices,such as cell phones) are all examples of machines and devices thatutilize processors, memory, and instructions stored on computer-readablemediums. Additionally, examples may be implemented in the form ofcomputer-programs, or a non-transitory computer usable carrier mediumcapable of carrying such a program.

System and Device Description

FIG. 1 is a block diagram illustrating an example mobile computingsystem performing a connection and control operation with aself-propelled device. The self-propelled device 150 may initiallyoperate in a sleep mode in which all dynamic functions of theself-propelled device 150 can be deactivated or powered down. In thissleep mode, a low-power radio processor 170 of the self-propelled device150 may trigger a signal generator 152 to periodically generate and emita radio signal 154. In various examples, the signal generator 152 canimplement a BLUETOOTH wireless protocol and emit the radio signal 154 inaccordance with BLUETOOTH low energy technology. For BLUETOOTH lowenergy implementations, the self-propelled device 152 may continuouslyoperate in the sleep mode for extended periods of time (e.g., on theorder of months or years). However, various other wireless protocols arecontemplated, including infrared and other radio-frequency (RF) systems.

As discussed herein, the self-propelled device 150 may be any devicecapable of remote operation and including a drive mechanism. Suchdevices may include various types of remote controlled vehicles (e.g.,cars, boats, planes, helicopters, etc.), or robotic devices, toys, orother devices capable of remote operation. Furthermore, the mobilecomputing system 100 described herein may be any mobile device capableof remote control of the self-propelled device 150. Such mobilecomputing systems 100 can include multi-functional devices, such asmobile computing devices (e.g., smartphones, tablets, laptops, computingaccessories, and the like). However, it is also contemplated that one ofthe mobile computing system 100 or the self-propelled device 150 may bestationary or substantially stationary and dynamic signal strengthrepresentation and automatic connection and control examples describedherein may still be implemented.

While in sleep mode, the radio processor 170 can trigger the signalgenerator 152 to periodically emit the radio signal 154 to advertise itsavailability for connection and control. In some implementations, this“advertising interval” may be on the order of milliseconds (e.g.,100-1000 milliseconds). However, it is contemplated that in variousother implementations, the advertising interval may be any constant orvariable value in which the signal generator 152 emits beacons.

The mobile computing system 100 can include a signal detector 105 todetect the radio signal 154 emitted by the signal generator 152. Thesignal detector 105 may directly transmit the radio signal 154 to asignal strength monitor 110, in which the received signal strengthindicator (RSSI) corresponding to the radio signal 154 may be generatedand/or monitored. Additionally or alternatively, each raw radio signal154 beaconed from signal generator 152 may be transmitted as signalinputs 107 from the signal detector 105 to the signal strength monitor110. In various examples, the signal strength monitor 110 may include anRSSI stabilizer comprising logic to stabilize the RSSI in order toprovide an accurate measurement of the signal strength of the radiosignal 154. In some examples, the RSSI stabilizer/signal strengthmonitor 110 can perform a linear regression technique in order to outputa stabilized RSSI 112. In other examples, RSSI stabilization may beperformed in which the RSSI/stabilizer/signal strength monitor 110 mayimplement spatial diversity techniques utilizing multiple antennas, RSSIfusion, adaptive location and tracking, and/or other RSSI stabilizationmethods.

The signal strength monitor 110 may transmit the stabilized RSSI to arepresentation generator 115, which can generate a dynamic visualrepresentation of the signal strength 117 of the radio signal 154 basedon the stabilized RSSI 112. The dynamic visual representation 117 maythen be transmitted to the display 120 of the mobile computing system100. In some implementations, the dynamic visual representation of thesignal strength 117 may be displayed with a threshold indicatorrepresenting a predetermined threshold signal strength in which anautomatic connection to the self-propelled device 150 may be initiated.As a user of the mobile computing system 100 moves closer to theself-propelled device 150, the increase in signal strength may bedynamically reflected in the visual representation 117. Once the signalstrength crosses the predetermined threshold, the automatic connectionand control sequence may be initiated.

In some examples, the mobile computing system 100 can also include aconnection engine 140 which may receive the stabilized RSSI 112 from thesignal strength monitor 110. The mobile computing system 100 can furtherinclude a memory 130 that stores connection instructions 133, which maybe implemented by the connection engine 140 to initiate and execute theautomatic connection sequence. In some examples, based on the stabilizedRSSI, the connection engine 140 can determine when the signal strengthof the radio signal 154 crosses the predetermined threshold. In suchexamples, the connection engine 140 may continuously compare thestabilized RSSI 112 with the predetermined threshold value. Once thestabilized RSSI 112 exceeds the threshold value, the connection engine140 can instigate an automatic connection with the self-propelled device150. As an alternative, once the signal strength crosses thepredetermined threshold, as measured or as visually represented on thedisplay 120, the connection engine 140 may generate a user prompt on thedisplay 120 indicating whether the user wishes to initiate theconnection and control sequence to establish a connection with theself-propelled device.

In other examples, the connection engine 140 may operate to monitor thedisplayed dynamic representation of the signal strength 117. As thesignal strength increases, the dynamic representation 117 may be shownto visually cross the displayed threshold indicator, and this visualcrossing of the threshold indicator may trigger the connection engine140 to initiate the connection sequence. In various examples, theinitiation of the connection sequence may also be indicated on thedisplay 120. Once the connection is established, a number ofinteractions may take place between the mobile computing device 100 andthe self-propelled device 150. For example, the self-propelled device150 may be programmed to initiate a greeting as described in detailbelow. Additionally or alternatively, upon establishing the connection,the mobile computing system can transition into a controller device toenable a user to control operation of the self-propelled device 150.

Once the signal strength crosses the predetermined threshold, either asmeasured by the connection engine 140 or as represented on the display120, the connection engine 140 can generate a connection signal 142 fortransmission to the self-propelled device 150. The mobile computingsystem 100 can include a wireless interface 145 for signal transmission.Thus, the connection engine 140 may transmit the connection signal tothe self-propelled device 150 via the wireless interface 145 toestablish the connection.

The mobile computing system 100 and the self-propelled device 150 mayinclude hardware for wireless communication in accordance with one ormore communication standards. Thus, the connection between the mobilecomputing system 100 and the self-propelled device 150 can beestablished in accordance with one or more of a variety of wirelessnetwork technologies, including BLUETOOTH low energy, Wireless USB, andvarious Wi-Fi or other wireless standards.

According to many implementations, the self-propelled device 142 caninclude a signal interface 182 to receive signals from the mobilecomputing system 100. As discussed above, the self-propelled device 150operates in a sleep mode in which all dynamic functions are deactivated.The connection signal 142 can ultimately awaken a main processor 180 ofthe self-propelled device 150 in order to prepare the self-propelleddevice 150 for operation. In some examples, the signal interface 182 maybe coupled to the main processor 180, in which the received connectionsignal 142 directly triggers the main processor 180 to power up theself-propelled device 150 and establish a connection with the mobilecomputing system 100.

Additionally or alternatively, the connection signal 142 may be receivedby one or more antennas of the self-propelled device 150 in the sleepmode. The radio processor 170, which is in operation during the sleepmode, may recognize the connection signal 142 and awaken the mainprocessor 180 to initiate a control mode on the self-propelled device150.

The self-propelled device 150 may include a memory resource 160 storinginstructions for operation of the self-propelled device 150 in bothsleep mode and control mode. Implementation of such instructions by theradio processor 170 may comprise transmission of the radio signal 154 atpredetermined intervals, adjusting power, detecting the connectionsignal 142, and awakening the main processor 180 to initiate controlmode. Implementation of the instructions by the main processor 180 maycomprise identifying the connection signal 142, receiving controlcommands 137, translating the control commands 137 into driveinstructions, and implementing the control commands 137 and/or driveinstructions on a drive system 190 of the self-propelled device 150.

Additionally or alternatively, the main processor 180 may transmit aconfirmation signal 147, in response to receiving the connection signal142, indicating that control mode on the self-propelled device 150 hasbeen initiated and/or a connection with the mobile computing system 100has been established. The confirmation signal 147 may be received by theconnection engine 140, which may then generate a launch signal 143 tocause a control processor 135 of the mobile computing system 100 toinitiate a control application 131.

According to several examples, upon establishing the connection, themobile computing system 100 and/or the self-propelled device 150 canautomatically perform a function. The function can comprise theself-propelled device initiating a greeting to the user of the mobilecomputing device 100. The greeting may be preprogrammed to executeautomatically on the self-propelled device 150 upon establishing theconnection. The greeting may be a standard action, such as illuminatingvisual elements of the self-propelled device 150 and/or performing oneor more maneuvers (e.g., a spin) as a predetermined salutation to theuser. Additionally or alternatively, the self-propelled device 150 canpull data from the mobile computing device 100, or an applicationrunning on the mobile computing device 100, in order to perform agreeting function to the user. For example, upon connecting with themobile computing device 100, the self-propelled device 150 can receivedata from the mobile computing device 100, such as calendar data,contact information, cached content (e.g., travel information associatedwith, for example, distance traveled over a duration of time), call loginformation, messaging information, and the like. Based on such receiveddata, the self-propelled device 150 can initiate a greeting to the user.

Additionally or alternatively, upon establishing the connection, theself-propelled device 150 can initiate network connectivity,individually or via the mobile computing device 100, in order to pulldata from a network (e.g., the Internet). For example, theself-propelled device 150 can identify weather data from a weatherresource over the network, and initiate a greeting based on the currentor daily weather forecast. Such a greeting may comprise an audiblesuggestion—such as suggesting we weather attire for the user if it israining or warm attire if it is cold.

In various implementations, the memory 130 of mobile computing system100 can store the control application 131 specific to controlling theself-propelled device 150. This control application 131 may bepreviously downloaded or otherwise installed on the mobile computingsystem 100 specifically to operate the self-propelled device 150 and/ormultiple self-propelled devices.

Accordingly, in response to receiving the launch signal 143 from theconnection engine 140, the control processor 135 may access and launchthe control application 131 from the memory 130 automatically.Alternatively, in response to receiving the launch signal 143 from theconnection engine 140, the control processor 135 may issue a prompt onthe display 120, allowing the user to confirm whether initiating thecontrol application 131 is desired.

In some examples, launch of the control application 131 may be performedin conjunction with the connection engine 140 transmitting theconnection signal 142 to the self-propelled device 150. In suchexamples, the control processor 135 may also monitor the signal strengthof the radio signal 154 and automatically launch the control application131 when the signal strength crosses the predetermined threshold—eitheras measured or as visually represented on the display 120. In similarexamples, establishing the connection with the self-propelled device 150may be synonymous to launching the control application 131. As such,once the signal strength of the radio signal 154 crosses thepredetermined threshold, the control processor may automatically, or viauser prompt, establish the connection with the self-propelled device150. Thus, in such implementations, establishing the connection andenabling control operations on the mobile computing system 100 isautomatic upon achieving the threshold signal strength.

Additionally or alternatively, launch of the control application 131 cancause the control processor 135 to generate virtual controls 139 andother interactive features for display. In various examples, the virtualcontrols 139 enable a user of the mobile computing system 100 toremotely operate the self-propelled device 150. The user may interactwith the virtual controls 139, such as a two-dimensional virtualsteering mechanism, and such user interactions 122 can be translated bythe control processor 135 into control commands 137, which may betransmitted to the self-propelled device 150 for implementation. Suchcontrol commands 137 may be received by the main processor 180 andimplemented on the drive system 190 of the self-propelled device 150.

In other examples, the user interactions 122 on the virtual controls 139can be transmitted directly (e.g., in raw form) to the self-propelleddevice 150, in which the main processor 180 may translate such userinteractions 122 as commands to be implemented on the drive system 190.As such, the processing of the user interactions 122 on the virtualcontrols 139 may be outsourced to the self-propelled device 150.

According to several of the above examples in reference to FIG. 1, uponinitiation of the control application 131, the RSSI stabilizer or signalstrength monitor 110 of the mobile computing device 100 can monitor theradio signal 154 emitted from a radio-frequency resource (e.g., aBLUETOOTH low energy module) of the self-propelled device 150. Once theRSSI exceeds or crosses a threshold, the mobile computing device 100 mayautomatically establish a connection with the self-propelled device 150.Once the connection is established, the virtual controls 139 may berendered on the display 120 to enable the user of the mobile computingdevice 100 to control and maneuver the self-propelled device 150remotely via the established connection (e.g., BLUETOOTH low energy) byperforming user interactions 122 on the virtual controls 139.

Additional examples in connection with FIG. 1 are contemplated. Forexample, while the connection is established with the self-propelleddevice 150, the RSSI stabilizer and signal strength monitor 110 cancontinue to monitor the RSSI. According to examples, if the signalweakens beyond a threshold, corresponding to the mobile computing device100 moving away from the self-propelled device 150, the connectionengine 140 can generate a weak signal warning 141 to be displayed on thedisplay 120 of the mobile computing device 100. The weak signal warning141 can communicate to the user, that if the signal becomes weaker orcrosses a critical threshold, the radio signal 154 will be too weak foreffective interaction. Upon crossing the critical threshold, the mobilecomputing device 100 can lose connectivity, or otherwise automaticallydisconnect with the self-propelled device 150.

The weak signal warning 141 may be generated as an alert to be displayedin conjunction with a rendered interface (e.g., virtual controls 139) ofthe mobile computing device 100. Alternatively, the weak warning signal141 may be generated to include the signal strength representation 117,to demonstrate to the user that the connection requires a certain amountof signal strength.

While examples discussed with regard to FIG. 1 largely involveinteraction between the mobile computing device 100 and theself-propelled device 150, establishing the connection based on astabilized RSSI may be implemented in connection with various devicesoperating under certain wireless protocols (e.g., BLUETOOTH low energy).For example, the self-propelled device 150 of FIG. 1 may be substitutedwith an accessory device or multiple accessory devices. Such accessorydevices may include a radio-frequency module with RSSI functionality(e.g., signal generator 152). These accessory devices can include orexclude any number of the components of the example self-propelleddevice 150 illustrated in FIG. 1. For example, an example accessorydevice, such as a robot, can include the radio processor 170 and signalgenerator 152, but exclude a main processor 180 and drive system 190.

Accessory devices as described herein may include static interactivedevices operable in conjunction with the self-propelled device 150. Forexample, the mobile computing device 100 may establish a connection,based on the RSSI threshold, with a number of accessory devices as wellas the self-propelled device 150, and interactions between theself-propelled device 150 and the accessory devices may be recorded(e.g., maneuvers performed on accessory devices, such as a ramp and/orrace track object). Thus, one or more of the interactions between theself-propelled device 150 and the accessory devices, all of which may beconnected to the mobile computing device 100 under operation by a user,may be recorded and tallied in relation to a control application 131running on the mobile computing device 100.

FIG. 2A is a flow chart describing an example high level method ofgenerating a visual representation of the signal strength of a detectedradio signal 154. In the below discussion of FIG. 2A, reference may bemade to like reference characters representing various features of FIG.1 for illustrative purposes. Furthermore, the method described inconnection with FIG. 2A may be performed by the mobile computing system100 as illustrated in FIG. 1. Referring to FIG. 2A, the mobile computingsystem 100 can initially detect a radio signal 154 emitted from aself-propelled device 150 (200). As described above, the radio signal154 may be a periodically emitted, low energy beacon at a preconfiguredpower setting. The emitted signal 154 may be detected by the mobilecomputing system 100 over an arbitrary distance (e.g., 0-100 meters)depending on a variety of factors, such as noise, sensitivity, power,etc.

Based on the detected radio signal 154, the mobile computing system 100can generate a dynamic representation of the radio signal 117 based onits signal strength (210). The generated dynamic representation 117 caninclude a variety of features, and can represent the signal strength ina variety of manners. In one example, the signal strength is representedas a circular or elliptical pattern in relation to a predeterminedsignal strength threshold. In other implementations, the signal strengthmay be represented graphically as a live bar graph or live line graphwith the threshold indicated respectively. In still furtherimplementations, the signal strength of the radio signal 154 may berepresented pictorially as a two-dimensional or three-dimensionalanimation. With regards to the above implementations, the dynamicrepresentation 117 may be generated in real-time to reflect live changesin the signal strength as the mobile computing system 100 gets closer tothe self-propelled device 150.

The generated dynamic representation of the signal strength of the radiosignal 117 can then be continuously displayed on the display 120 of themobile computing system 100 (220).

FIG. 2B is a flow chart describing an example low level method offacilitating automatic control connection with a self-propelled device.In the below discussion of FIG. 2B, reference may also be made to likereference characters representing various features of FIG. 1 forillustrative purposes. Furthermore, the method described in connectionwith FIG. 2B may be performed by the mobile computing system 100 asillustrated in FIG. 1. Referring to FIG. 2B, the mobile computing system100 may initially detect a radio signal 154 emitted from theself-propelled device 150 (230). The mobile computing device 100 canthen process the radio signal 154 to determine its signal strength andprovide a signal strength indicator (e.g., RSSI) for the radio signal154.

The mobile computing system 100 may then stabilize the signal strengthindicator (235) using, for example, a linear regression model. Thisstabilized signal strength indicator may then be used by the mobilecomputing system 100 to generate a dynamic representation of the signalstrength of the radio signal 154 (240). As discussed above, the dynamicrepresentation may be generated in real-time in any number ofvariations, and can be displayed on the display 120 of the mobilecomputing system 100 in real-time as well (245).

The mobile computing system 100 can monitor the stabilized signalstrength (or the displayed visual representation 117) (250). As the usermoves the mobile computing system 100 towards the self-propelled device150 the signal strength increases, which can be dynamically reflected onthe displayed visual representation 117. A connection and controlsequence may be triggered automatically when the stabilized signalstrength exceeds a predetermined threshold. Thus, the mobile computingsystem 100 can make a continuous determination regarding whether thesignal strength has exceeded the threshold (255), in which adetermination that the signal strength has not exceed the threshold(257) results in further monitoring of the stabilized signal strength(250). Alternatively, the mobile computing system 100 may passivelymonitor the signal strength, and once the threshold is exceeded (259),the connection and control sequence is initiated automatically.Optionally, the mobile computing system 100 may automatically generate aprompt in response to the threshold crossing so that the user canmanually initiate the connection and control sequence.

In various examples, the mobile computing system 100 may then initiatethe connection and control sequence by automatically establishing aconnection with the self-propelled device 150 (260). The mobilecomputing system 100 can also initiate a control application 131 inorder to display virtual controls 139 on the display 120 (265). Asprovided above, in many examples, the initiation of the controlapplication 131 can itself cause the connection to be established withthe self-propelled device 150 (260), as well as configuring the mobilecomputing system 100 as a remote controller device to enable useroperation of self-propelled device 150 via the virtual controls 139.

The mobile computing system 100 may then receive user interactions 122on the displayed virtual controls 139 (270). These user interactions 122may be interpreted by the mobile computing system 100 as controlcommands 137 to be implemented on the drive system 190 of theself-propelled device 150. As such, the mobile computing system 100 cantransmit the control commands 137 to the self-propelled device 150 (275)in order to cause the self-propelled device 150 to be operated inaccordance with the user interactions 122 on the virtual controls 139.

Example Self-Propelled Device

FIG. 3 illustrates schematic diagram of an example self-propelled device300 upon which examples described herein may be implemented. However,variations of the present disclosure are not limited to such devices.Rather, the systems and methods described herein can be implemented withrespect to any remote device in which pairings or connections are made.Referring to FIG. 3, the self-propelled device 300 can be of a size andweight allowing it to be easily grasped, lifted, and carried in an adulthuman hand. The self-propelled device 300 can include an outer sphericalshell (or housing) 302 that makes contact with an external surface asthe device maneuvers. In addition, the self-propelled device 300 caninclude an inner surface 304 of the outer shell 302. Additionally, theself-propelled device 300 can include several mechanical and electroniccomponents enclosed by outer shell 302 and inner surface 304(collectively known as the envelope).

The outer shell 302 and inner surface 304 can be composed of a materialthat transmits signals used for wireless communication, and yet areimpervious to moisture and dirt. The envelope material can be durable,washable, and/or shatter resistant. The envelope may also be structuredto enable transmission of light and is textured to diffuse the light.

In one variation, the housing is made of sealed polycarbonate plastic.In one example, at least one of the outer shell 302 or inner surface 304are textured to diffuse light. In one example, the envelope comprisestwo hemispherical shells with an associated attachment mechanism, suchthat the envelope can be opened to allow access to the internalelectronic and mechanical components.

Several electronic and mechanical components are located inside theenvelope for enabling processing, wireless communication, propulsion andother functions (collectively referred to as the “interior mechanism”).Among the components, examples include a drive system 301 to enable thedevice to propel itself. The drive system 301 can be coupled toprocessing resources and other control mechanisms, as described withother examples. The carrier 314 serves as the attachment point andsupport for components of the interior mechanism. The components of theinterior mechanism are not rigidly attached to the envelope. Instead,the interior mechanism can be in frictional contact with the innersurface 304 at selected points, and is movable within the envelope bythe action of actuators of the drive mechanism.

The carrier 314 can be in mechanical and electrical contact with anenergy storage 316. The energy storage 316 provides a reservoir ofenergy to power the device 300 and electronics and can be replenishedthrough N inductive charge port 326. The energy storage 316, in oneexample, is a rechargeable battery. In one variation, the battery iscomposed of lithium-polymer cells. In other variations, otherrechargeable battery chemistries are used.

The carrier 314 can provide the mounting location for most of theinternal components, including printed circuit boards for electronicassemblies, sensor arrays, antennas, and connectors, as well asproviding a mechanical attachment point for internal components.

The drive system 301 includes motors 322, 324 and wheels 318, 320. Themotors 322 and 324 connect to the wheels 318 and 320, respectively, eachthrough an associated shaft, axle, and gear drive (not shown). Theperimeter of wheels 318 and 320 can be two points where the interiormechanism can be in mechanical contact with inner surface 304. Thepoints where wheels 318 and 320 contact inner surface 304 are anessential part of the drive mechanism of the ball, and so are preferablycoated with a material to increase friction and reduce slippage. Forexample, the wheels 318 and 320 can be covered with silicone rubbertires.

In some variations, a biasing mechanism is provided to actively forcethe wheels 318, 320 against the inner surface 304. In an exampleprovided, the spring 312 and end 310 can comprise a biasing mechanism.More specifically, spring 312 and spring end 310 are positioned tocontact inner surface 304 at a point diametrically opposed to wheels 318and 320. Spring 312 and end 310 provide additional contact force toreduce slippage of the wheels 318 and 320, particularly in situationswhere the interior mechanism is not positioned with the wheels at thebottom and where gravity does not provide adequate force to prevent thedrive wheels from slipping. The spring 312 is selected to provide asmall force pushing wheels 318 and 320, and the spring end 310 evenlyagainst inner surface 304.

The spring end 310 is designed to provide near-frictionless contact withinner surface 304. The spring end 310 comprises a rounded surfaceconfigured to mirror a low-friction contact region at all contact pointswith the inner surface 304. Additional means of providingnear-frictionless contact may be provided. In another implementation,the rounded surface may include one or more bearings to further reducefriction at the contact point where end 310 moves along inner surface304. The spring 312 and the spring end 310 are preferably made of anon-magnetic material to avoid interference with sensitive magneticsensors.

FIG. 4A is a flow chart describing an example process for operating aself-propelled device in a sleep mode. In the below description of FIG.4A, reference may be made to like reference characters of theself-propelled device 150 and mobile computing system 100 of FIG. 1.Referring to FIG. 4A, the self-propelled device 150 may initiallyoperate in a sleep mode (400), in which all dynamic functions may bedeactivated or powered down. In this sleep mode, a radio processor 170and signal generator 152 of the self-propelled device 150 can bepre-configured or programmed to emit a continuous radio signal 154(410). As discussed above, the radio signal 154 may be a beacontransmission advertising the self-propelled device's availability forconnection and operation. Such a beacon may be transmitted utilizingincluded wireless hardware on the self-propelled device 150, which mayimplement any number of wireless technologies and protocols. In variousexamples, the emitted radio signal 154 is a BLUETOOTH low energy signal,enabling the self-propelled device 150 to beacon for an extended periodof time (e.g., months). In other examples, the emitted radio signal 154may be a Wi-Fi, or other wireless advertising beacon or signal emittedat a preconfigured or standardized power level.

The self-propelled device 150 may remain in sleep mode until aconnection signal 142 is received from a mobile computing system 100based on proximity/signal strength (410). As discussed above, the mobilecomputing device 100 may trigger the connection and control sequenceonce the signal strength of the emitted radio signal 154 crosses apredetermined threshold. On the self-propelled device 150, theconnection and control sequence is initiated when the connection signal142, which can correspond to the launch of the control application 131,is received.

In response to receiving the connection signal 142, the radio processor170 of the self-propelled device can awaken the main processor 180 topower up the self-propelled device 150 for operation (430).

FIG. 4B is a flow chart describing an example process for operating aself-propelled device in a control mode. In the below description ofFIG. 4B, reference may be made to like reference characters of theself-propelled device 150 and mobile computing system 100 of FIG. 1.Referring to FIG. 4B, once the self-propelled device 150 is powered upand the control connection with the mobile computing system 100 isestablished, the self-propelled device may receive a number of controlcommands 137 from the mobile computing system 100 based on userinteractions 122 with virtual controls 139 rendered on the display 120(460). In some variations, the self-propelled device 150 may directlyimplement the control commands 137 on the drive system 190 to maneuverthe self-propelled device 150 in accordance with the user interactions122 on the mobile computing system 100 (470). In other variations, themain processor 180 of the self-propelled device 150 can receive thecontrol commands 137 and translate them into drive instructions (465).Accordingly, these translated drive instructions may be implemented onthe drive system 190 in order to maneuver the self-propelled device 150(470).

A user may operate the self-propelled device 150 for any period of timelimited only by battery power available on the self-propelled device150. Among the user interactions with the mobile computing system 100,the user may end an operation session by deactivating or otherwiseending operation of the control application 131 on the mobile computingsystem 100. Prior to ending the session, the mobile computing system 100may transmit a disconnection signal to the self-propelled device 150.Thus, the self-propelled device 150 can receive the disconnect signal toend the control mode (475). In response to receiving the disconnectsignal, the main processor 180 can power down the dynamic components ofthe self-propelled device 150, including the drive system 190 (480). Themain processor 180 may then initiate sleep mode, in which the radioprocessor 170 and signal generator 152 can emit beacons according to theexamples described herein (485).

Hardware Diagram

FIG. 5 is a block diagram that illustrates a computer system upon whichexamples described may be implemented. For example, one or morecomponents discussed with respect to the systems and the methodsdescribed herein may be performed by the system 500 of FIG. 5. Thesystems and methods described can also be implemented using acombination of multiple computer systems as described by FIG. 5.

In one implementation, the computer system 500 includes processingresources 510, a main memory 520, ROM 530, a storage device 540, acommunication interface 550, and a display 560. The computer system 500includes at least one processor 510 for processing information and amain memory 520, such as a random access memory (RAM) or other dynamicstorage device, for storing information and instructions 522 to beexecuted by the processor 510. The main memory 520 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by the processor 510. Thecomputer system 500 may also include a read only memory (ROM) 530 orother static storage device for storing static information andinstructions for the processor 510. A storage device 540, such as amagnetic disk or optical disk, is provided for storing information andinstructions. For example, the storage device 540 can correspond to acomputer-readable medium that store connection instructions 542 forperforming operations discussed with respect to FIGS. 1-4.

The communication interface 550 can enable computer system 500 tocommunicate with a self-propelled device (e.g., cellular or Wi-Finetwork) through use of a network link (wireless or wire line). Usingthe network link, the computer system 500 can communicate with aplurality of devices, such as the self-propelled device 150. The mainmemory 520 of the computer system 500 can further store the controlapplication 524 which can be launched by the processor 510 uponexceeding the signal strength threshold. According to some examples, thecomputer system 500 can detect the emitted radio signal 512 from theself-propelled device, and in response to the signal exceeding thethreshold signal strength, the processor can automatically generate theconnection signal 554 to transmit to the self-propelled device viacommunication interface, and/or launch the control application 524.Furthermore, the processor can generate and render the dynamicrepresentation of the signal strength 562 upon the display 560. Uponlaunch of the control application 524, the processor can furthergenerate and render virtual controls 564 upon the display 560. Userinteractions with the virtual controls 564 on the display 560 can causethe processor 510 to transmit control commands 552 to the self-propelleddevice via the communication interface 550.

Examples described herein are related to the use of computer system 500for implementing the techniques described herein. According to oneexample, those techniques are performed by computer system 500 inresponse to processor 510 executing one or more sequences of one or moreinstructions contained in main memory 520, such as the controlapplication 524. Such instructions may be read into main memory 520 fromanother machine-readable medium, such as storage device 540. Executionof the sequences of instructions contained in main memory 520 causesprocessor 510 to perform the process steps described herein. Inalternative implementations, hard-wired circuitry and/or hardware may beused in place of or in combination with software instructions toimplement examples described herein. Thus, the examples described arenot limited to any specific combination of hardware circuitry andsoftware.

CONCLUSION

It is contemplated for examples described herein to extend to individualelements and concepts described herein, independently of other concepts,ideas or system, as well as for examples to include combinations ofelements recited anywhere in this application. Although examples aredescribed in detail herein with reference to the accompanying drawings,it is to be understood that this disclosure is not limited to thoseprecise examples. As such, many modifications and variations will beapparent to practitioners skilled in this art. Accordingly, it isintended that the scope of this disclosure be defined by the followingclaims and their equivalents. Furthermore, it is contemplated that aparticular feature described either individually or as part of anexample can be combined with other individually described features, orparts of other examples, even if the other features and examples make nomentioned of the particular feature. Thus, the absence of describingcombinations should not preclude the inventor from claiming rights tosuch combinations.

Although illustrative examples have been described in detail herein withreference to the accompanying drawings, variations to specific examplesand details are encompassed by this disclosure. It is intended that thescope of the invention is defined by the following claims and theirequivalents. Furthermore, it is contemplated that a particular featuredescribed, either individually or as part of an example, can be combinedwith other individually described features, or parts of other examples.Thus, absence of describing combinations should not preclude theinventor(s) from claiming rights to such combinations.

While certain examples have been described above, it will be understoodthat the examples described are by way of example only. Accordingly,this disclosure should not be limited based on the described examples.Rather, the scope of the disclosure should only be limited in light ofthe claims that follow when taken in conjunction with the abovedescription and accompanying drawings.

What is claimed is:
 1. A method of connecting to a self-propelleddevice, the method performed by one or more processors of a mobilecomputing device and comprising: detecting a radio signal emitted fromthe self-propelled device; providing an accurate signal strengthmeasurement, wherein providing the accurate signal strength measurementcomprises stabilizing a received signal strength indicator associatedwith the radio signal; generating a stabilized signal strengthindicator; based on the stabilized signal strength indicator, generatinga dynamic representation of a signal strength of the radio signal;displaying the dynamic representation of the signal strength on atouch-sensitive display of the mobile computing device; and when thesignal strength crosses a predetermined threshold, automaticallyconnecting to the self-propelled device.
 2. The method of claim 1,further comprising: when the signal strength crosses a predeterminedthreshold, automatically initiating a control application to establish aconnection with the self-propelled device.
 3. The method of claim 2,wherein initiating the control application comprises displaying virtualinteractive controls on the touch-sensitive display, the method furthercomprising: receiving user interactions on the virtual interactivecontrols; and based on the user interactions, transmitting controlcommands to the self-propelled device to cause the self-propelled deviceto maneuver in accordance with the user interactions.
 4. The method ofclaim 1, wherein the radio signal emitted from the self-propelled devicecomprises a BLUETOOTH low energy beacon.
 5. The method of claim 4,further comprising: in response to detecting the BLUETOOTH low energybeacon, stabilizing a received signal strength indicator (RSSI)corresponding to the BLUETOOTH low energy beacon.
 6. The method of claim5, wherein stabilizing the RSSI comprises inputting individuallyreceived RSSI values into a linear regression model to output thestabilized RSSI.
 7. The method of claim 1, wherein automaticallyconnecting awakens an internal main processor on the self-propelleddevice.
 8. A mobile computing device comprising: a touch-sensitivedisplay; one or more processors; and one or more memory resourcesstoring instructions that, when executed by the one or more processors,cause the mobile computing device to: detect a radio signal emitted fromthe self-propelled device; provide an accurate signal strengthmeasurement, wherein providing the accurate signal strength measurementcomprises stabilizing a received signal strength indicator associatedwith the radio signal; generate a stabilized signal strength indicator;based on the stabilized signal strength indicator, generate a dynamicrepresentation of a signal strength of the radio signal; display thedynamic representation of the signal strength on the touch-sensitivedisplay; and when the signal strength crosses a predetermined threshold,automatically connect to the self-propelled device.
 9. The mobilecomputing device of claim 8, wherein the executed instructions furthercause the mobile computing device to: when the signal strength crosses apredetermined threshold, automatically initiating a control applicationto establish a connection with the self-propelled device.
 10. The mobilecomputing device of claim 9, wherein initiating the control applicationcomprises displaying virtual interactive controls on the touch-sensitivedisplay, and wherein the executed instructions further cause the mobilecomputing device to: receive user interactions on the virtualinteractive controls; and based on the user interactions, transmitcontrol commands to the self-propelled device to cause theself-propelled device to maneuver in accordance with the userinteractions.
 11. The mobile computing device of claim 8, wherein theradio signal emitted from the self-propelled device comprises aBLUETOOTH low energy beacon.
 12. The mobile computing device of claim11, wherein the executed instructions further cause the mobile computingdevice to: in response to detecting the BLUETOOTH low energy beacon,stabilize a received signal strength indicator (RSSI) corresponding tothe BLUETOOTH low energy beacon.
 13. The mobile computing device ofclaim 12, wherein stabilizing the RSSI comprises inputting individuallyreceived RSSI values into a linear regression model to output thestabilized RSSI.
 14. The mobile device of claim 8, causing the mobilecomputing device to automatically connect awakens an internal mainprocessor on the self-propelled device.
 15. A non-transitory computerreadable medium storing instructions that, when executed by one or moreprocessors of a mobile computing device, cause the one or moreprocessors to: detect a radio signal emitted from a self-propelleddevice; provide an accurate signal strength measurement, whereinproviding the accurate signal strength measurement comprises stabilizinga received signal strength indicator associated with the radio signal;generate a stabilized signal strength indicator; based on the stabilizedsignal strength indicator, generate a dynamic representation of a signalstrength of the radio signal; display the dynamic representation of thesignal strength on a touch-sensitive display of the mobile computingdevice; and when the signal strength crosses a predetermined threshold,automatically connect to the self-propelled device.
 16. Thenon-transitory computer readable medium of claim 15, wherein theexecuted instructions further cause the one or more processors to: whenthe signal strength crosses a predetermined threshold, automaticallyinitiating a control application to establish a connection with theself-propelled device.
 17. The non-transitory computer readable mediumof claim 16, wherein initiating the control application comprisesdisplaying virtual interactive controls on the touch-sensitive display,and wherein the executed instructions further cause the mobile computingdevice to: receive user interactions on the virtual interactivecontrols; and based on the user interactions, transmit control commandsto the self-propelled device to cause the self-propelled device tomaneuver in accordance with the user interactions.
 18. Thenon-transitory computer readable medium of claim 15, whereinautomatically connecting awakens an internal main processor on theself-propelled device.